package com.cpms.framework.common.utils;


import com.cpms.framework.common.enums.GlobalResponseResultEnum;
import com.cpms.framework.common.exception.BizException;
import com.github.yitter.idgen.YitIdHelper;

import java.util.Random;

/**
 * @description: 生成业务ID/编号
 * @author: gulang
 * @time: 2021/9/28 11:31
 */
public class CsGenerateIdUtil {
    /**
     * 生成所属租户的用户账号
     * @param accountPrefix  账号前缀
     * @param len  除去前缀的账号长度
     * @param seed 起始值
     * @return
     */
    public static String userAccount(String accountPrefix,int len,Long seed){
        if(CsStringUtil.isBlank(accountPrefix)) {
            accountPrefix = "CS";
        }
       return accountPrefix +String.format("%0"+len+"d", seed);
    }

    /**
     * 生成业务编号
     * @param prefix  前缀
     * @param len  除去前缀的账号长度
     * @param seed 起始值
     * @return
     */
    public static String generateBizNumber(String prefix,int len,int seed){
        if(len <=0 || seed < 0) {
            throw new BizException(GlobalResponseResultEnum.ILLEGAL_PARAMETER_ERROR);
        }
        if(CsStringUtil.isBlank(prefix)) {
            return String.format("%0"+len+"d", seed);
        }
        return prefix +String.format("%0"+len+"d", seed);
    }

    /**
     *  生成短信验证码(4位数)
     * @return
     */
    public static int generateSmsCode() {
        Random random = new Random();
        // 生成一个1000到9999之间的随机整数
        return random.nextInt(9000) + 1000;
    }

    /**
     *  生成全局唯一ID （雪花算法）
     * @return
     */
    public  static long nextId(){
        return YitIdHelper.nextId();
    }
}
